package com.cg.design.graphicdesignpattern.decorator;

/**
 * 可以显示多行字符串的抽象类
 *
 * @program: LeetCode->Display
 * @description: 可以显示多行字符串的抽象类
 * @author: cg
 * @create: 2022-03-25 19:02
 **/
public abstract class Display {
    /**
     * 获取横向字符数的抽象方法
     * @return
     */
    public abstract int getColumns();

    /**
     * 获取纵向字符数的抽象方法
     * @return
     */
    public abstract int getRows();

    /**
     * 获取第第row行的字符串的抽象方法
     * @param row
     * @return
     */
    public abstract String getRowText(int row);

    /**
     * 显示所以行字符串的方法，不允许覆盖
     */
    public final void show() {
        for (int i = 0; i < getRows(); i++) {
            System.out.println(getRowText(i));
        }
    }
}
